/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sueca2011;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author hugo, gabrieloliveira
 */
public class Nivel2 extends Nivel1{
    public Nivel2(String nome) throws RemoteException{
        super(nome);
    }

    @Override
    protected ArrayList<Carta> getCartasValidas() throws RemoteException{
        System.out.println("Validas nivel 2");
        ArrayList<Carta> validas = new ArrayList<Carta>();
        Iterator<Carta> it = cartasNaMao.iterator();
        Carta c;
        while(it.hasNext()){
            c = it.next();
            if(this.validaCarta(c) && c.getNipe()!=super.trunfo.getNipe()){
                validas.add(c);
            }
        }
        if(validas.isEmpty())
            return super.getCartasValidas();
        else
            return validas;
    }

    @Override
    public synchronized void escolheJogada() throws RemoteException {
        Carta carta=null;

        switch(posRodada){
            case 0:
                carta = getCartaMaiorValor();

                break;
            case 1:
                System.out.println("IA(1) caso 1");
                carta = getMelhorCarta();
                if(comparaCartas(carta,mesaRodada[0].getCartaJogada())<0)
                    carta = getCartaMenorValor();
                break;
            case 2:
                System.out.println("IA(1) caso 2");
                if(comparaCartas(mesaRodada[0].getCartaJogada(), mesaRodada[1].getCartaJogada())>0){
                    carta  = getCartaMaiorValor();
                }else{
                    carta = getMelhorCarta();
                    if(comparaCartas(carta,mesaRodada[1].getCartaJogada())<0)
                        carta = getCartaMenorValor();
                }
                break;
            case 3:
                System.out.println("IA(1) caso 3");
                if(comparaCartas(mesaRodada[1].getCartaJogada(), mesaRodada[0].getCartaJogada())>0 && comparaCartas(mesaRodada[1].getCartaJogada(), mesaRodada[2].getCartaJogada())>0){
                    carta  = getCartaMaiorValor();
                }else{
                    carta = getMelhorCarta();
                    if(comparaCartas(carta,mesaRodada[0].getCartaJogada())<0 && comparaCartas(carta,mesaRodada[2].getCartaJogada())<0)
                        carta = getCartaMenorValor();
                }
                break;
        }

        if(carta==null){
            System.out.println("IA(2) nao conseguiu escolher uma jogada, chamando nivel 1!");
            super.escolheJogada();
        }else{
            this.jogadaAtual = new Jogada(this, carta);
            System.out.println("Carta escolhida pelo nivel 2: "+this.jogadaAtual.getCartaJogada());
        }
    }

}
